deterministic method